Tables [dbo].[UserMain]
Properties
PropertyValue
Created10:31:42 AM Tuesday, March 02, 2010
Last Modified4:01:58 AM Thursday, March 15, 2012
Columns
NameData TypeMax Length (Bytes)Allow NullsDefault
Cluster Primary Key PK_UserMain: UserKeyForeign Keys FK_UserMain_ContactMain: [dbo].[ContactMain].UserKeyUserKeyuniqueidentifier16
No
(newid())
Indexes IX_ContactMaster: ContactMasterContactMastervarchar(50)50
Yes
('')
Indexes IX_UserMain_UserId: ProviderKey\UserIdUserIdnvarchar(60)120
No
('')
IsDisabledbit1
No
((1))
EffectiveDatedatetime8
No
ExpirationDatedatetime8
Yes
Foreign Keys FK_UserMain_UserMain_UpdatedBy: [dbo].[UserMain].UpdatedByUserKeyIndexes IX_UserMain_UpdatedByUserKey: UpdatedByUserKeyUpdatedByUserKeyuniqueidentifier16
No
UpdatedOndatetime8
No
(getdate())
Foreign Keys FK_UserMain_UserMain_CreatedBy: [dbo].[UserMain].CreatedByUserKeyIndexes IX_UserMain_CreatedByUserKey: CreatedByUserKeyCreatedByUserKeyuniqueidentifier16
No
CreatedOndatetime8
No
MarkedForDeleteOndatetime8
Yes
Foreign Keys FK_UserMain_GroupMain: [dbo].[GroupMain].DefaultDepartmentGroupKeyIndexes IX_UserMain_DefaultDepartmentGroupKey: DefaultDepartmentGroupKeyDefaultDepartmentGroupKeyuniqueidentifier16
Yes
Foreign Keys FK_UserMain_Perspective: [dbo].[Perspective].DefaultPerspectiveKeyIndexes IX_UserMain_DefaultPerspectiveKey: DefaultPerspectiveKeyDefaultPerspectiveKeyuniqueidentifier16
Yes
Indexes IX_UserMain_UserId: ProviderKey\UserIdProviderKeynvarchar(100)200
Yes
Indexes Indexes
NameColumnsUnique
Cluster Primary Key PK_UserMain: UserKeyPK_UserMainUserKey
Yes
IX_ContactMasterContactMaster
IX_UserMain_CreatedByUserKeyCreatedByUserKey
IX_UserMain_DefaultDepartmentGroupKeyDefaultDepartmentGroupKey
IX_UserMain_DefaultPerspectiveKeyDefaultPerspectiveKey
IX_UserMain_UpdatedByUserKeyUpdatedByUserKey
IX_UserMain_UserIdProviderKey, UserId
Triggers Triggers
NameANSI Nulls OnQuoted Identifier OnOn
asi_UserMain_Delete
Yes
Yes
After Delete
asi_UserMain_Insert
Yes
Yes
After Insert
asi_UserMain_Update
Yes
Yes
After Update
Foreign Keys Foreign Keys
NameColumns
FK_UserMain_ContactMainUserKey->[dbo].[ContactMain].[ContactKey]
FK_UserMain_GroupMainDefaultDepartmentGroupKey->[dbo].[GroupMain].[GroupKey]
FK_UserMain_PerspectiveDefaultPerspectiveKey->[dbo].[Perspective].[PerspectiveKey]
FK_UserMain_UserMain_CreatedByCreatedByUserKey->[dbo].[UserMain].[UserKey]
FK_UserMain_UserMain_UpdatedByUpdatedByUserKey->[dbo].[UserMain].[UserKey]
Permissions
TypeActionOwning Principal
GrantSelectIMIS
SQL Script
CREATE TABLE [dbo].[UserMain]
(
[UserKey] [uniqueidentifier] NOT NULL CONSTRAINT [DF_UserMain_UserKey] DEFAULT (newid()),
[ContactMaster] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL CONSTRAINT [DF_UserMain_ContactMaster] DEFAULT (''),
[UserId] [nvarchar] (60) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL CONSTRAINT [DF_UserMain_UserId] DEFAULT (''),
[IsDisabled] [bit] NOT NULL CONSTRAINT [DF_UserMain_IsDisabled] DEFAULT ((1)),
[EffectiveDate] [datetime] NOT NULL,
[ExpirationDate] [datetime] NULL,
[UpdatedByUserKey] [uniqueidentifier] NOT NULL,
[UpdatedOn] [datetime] NOT NULL CONSTRAINT [DF_UserMain_UpdatedOn] DEFAULT (getdate()),
[CreatedByUserKey] [uniqueidentifier] NOT NULL,
[CreatedOn] [datetime] NOT NULL,
[MarkedForDeleteOn] [datetime] NULL,
[DefaultDepartmentGroupKey] [uniqueidentifier] NULL,
[DefaultPerspectiveKey] [uniqueidentifier] NULL,
[ProviderKey] [nvarchar] (100) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
) ON [PRIMARY]

GO
CREATE TRIGGER [dbo].[asi_UserMain_Delete]
   ON [dbo].[UserMain]
   FOR DELETE
AS
BEGIN
    SET NOCOUNT ON
    DECLARE @groupTypeKey uniqueidentifier
    SET @groupTypeKey = '636A1E55-38BC-4A8F-AC8D-A6873D697F18'
    DELETE gm
      FROM deleted d INNER JOIN [dbo].[ContactMain] cm ON d.[UserKey] = cm.[ContactKey]
                     INNER JOIN [dbo].[Name] n ON cm.[SyncContactID] = n.[ID]
                     INNER JOIN [dbo].[Member_Types] mt ON mt.[MEMBER_TYPE] = n.[MEMBER_TYPE]
                     INNER JOIN [dbo].[GroupMain] g ON g.[Name] = mt.[DESCRIPTION] AND g.[GroupTypeKey] = @groupTypeKey
                     INNER JOIN [dbo].[GroupMember] gm ON gm.[GroupKey] = g.[GroupKey] AND gm.[MemberContactKey] = cm.[ContactKey]

    SET NOCOUNT OFF
END


GO
CREATE TRIGGER [dbo].[asi_UserMain_Insert]
   ON [dbo].[UserMain]
   FOR INSERT
AS
BEGIN
    SET NOCOUNT ON

    DECLARE @now datetime
    DECLARE @userKey uniqueidentifier
    DECLARE @groupTypeKey uniqueidentifier
    
    SET @groupTypeKey = '636A1E55-38BC-4A8F-AC8D-A6873D697F18'
    SELECT @now = GETDATE()
    SELECT @userKey = [UserKey] FROM [dbo].[UserMain] WHERE [UserId] = 'SYSTEM'
    IF @userKey IS NULL SELECT @userKey = [UserKey] FROM [dbo].[UserMain] WHERE [UserId] = 'MANAGER'

    INSERT INTO [dbo].[GroupMember] ([GroupMemberKey], [GroupKey], [MemberContactKey], [IsActive],
                                     [CreatedByUserKey], [CreatedOn], [UpdatedByUserKey], [UpdatedOn],
                                     [DropDate], [JoinDate], [MarkedForDeleteOn])
        SELECT NEWID(), g.GroupKey, i.UserKey, 1, @userKey, @now, @userKey, @now, NULL, NULL, NULL  
          FROM inserted i INNER JOIN [dbo].[ContactMain] cm ON i.[UserKey] = cm.[ContactKey]
                          INNER JOIN [dbo].[Name] n ON cm.[SyncContactID] = n.[ID]
                          INNER JOIN [dbo].[Member_Types] mt ON mt.[MEMBER_TYPE] = n.[MEMBER_TYPE]
                          INNER JOIN [dbo].[GroupMain] g ON g.[Name] = mt.[DESCRIPTION] AND g.[GroupTypeKey] = @groupTypeKey
           AND NOT EXISTS (SELECT 1 FROM [dbo].[GroupMember] gm WHERE gm.GroupKey = g.GroupKey)

    SET NOCOUNT OFF
END

GO
CREATE TRIGGER [dbo].[asi_UserMain_Update]
   ON [dbo].[UserMain]
   FOR UPDATE
AS
BEGIN
    SET NOCOUNT ON
    
    DECLARE @groupTypeKey uniqueidentifier
    SET @groupTypeKey = '636A1E55-38BC-4A8F-AC8D-A6873D697F18'
    
    -- Delete MemberType security record if User is being disabled
    IF EXISTS (SELECT 1 FROM inserted i INNER JOIN deleted d ON i.[UserKey] = d.[UserKey] WHERE i.[IsDisabled] = 1 AND d.[IsDisabled] = 0)
    BEGIN
        DELETE gm
          FROM deleted d INNER JOIN inserted i ON d.[UserKey] = i.[UserKey]
                         INNER JOIN [dbo].[ContactMain] cm ON i.[UserKey] = cm.[ContactKey]
                         INNER JOIN [dbo].[Name] n ON cm.[SyncContactID] = n.[ID]
                         INNER JOIN [dbo].[Member_Types] mt ON mt.[MEMBER_TYPE] = n.[MEMBER_TYPE]
                         INNER JOIN [dbo].[GroupMain] g ON g.[Name] = mt.[DESCRIPTION] AND g.[GroupTypeKey] = @groupTypeKey
                         INNER JOIN [dbo].[GroupMember] gm ON gm.[GroupKey] = g.[GroupKey] AND gm.[MemberContactKey] = cm.[ContactKey]
         WHERE i.[IsDisabled] = 1 AND d.[IsDisabled] = 0
    END
    
    -- Insert MemberType security record if User is being enabled
    IF EXISTS (SELECT 1 FROM inserted i INNER JOIN deleted d ON i.[UserKey] = d.[UserKey] WHERE i.[IsDisabled] = 0 AND d.[IsDisabled] = 1)
    BEGIN
        DECLARE @now datetime
        DECLARE @userKey uniqueidentifier
        SELECT @now = GETDATE()
        SELECT @userKey = [UserKey] FROM [dbo].[UserMain] WHERE [UserId] = 'SYSTEM'
        IF @userKey IS NULL SELECT @userKey = [UserKey] FROM [dbo].[UserMain] WHERE [UserId] = 'MANAGER'

        INSERT INTO [dbo].[GroupMember] ([GroupMemberKey], [GroupKey], [MemberContactKey], [IsActive],
                                         [CreatedByUserKey], [CreatedOn], [UpdatedByUserKey], [UpdatedOn],
                                         [DropDate], [JoinDate], [MarkedForDeleteOn])
            SELECT NEWID(), g.GroupKey, i.UserKey, 1, @userKey, @now, @userKey, @now, NULL, NULL, NULL  
              FROM inserted i INNER JOIN deleted d ON i.[UserKey] = d.[UserKey]
                              INNER JOIN [dbo].[ContactMain] cm ON i.[UserKey] = cm.[ContactKey]
                              INNER JOIN [dbo].[Name] n ON cm.[SyncContactID] = n.[ID]
                              INNER JOIN [dbo].[Member_Types] mt ON mt.[MEMBER_TYPE] = n.[MEMBER_TYPE]
                              INNER JOIN [dbo].[GroupMain] g ON g.[Name] = mt.[DESCRIPTION] AND g.[GroupTypeKey] = @groupTypeKey
             WHERE i.[IsDisabled] = 0 AND d.[IsDisabled] = 1
               AND NOT EXISTS (SELECT 1 FROM [dbo].[GroupMember] gm WHERE gm.GroupKey = g.GroupKey AND gm.MemberContactKey = cm.ContactKey)
    END
    
    SET NOCOUNT OFF
END

GO
ALTER TABLE [dbo].[UserMain] ADD CONSTRAINT [PK_UserMain] PRIMARY KEY CLUSTERED ([UserKey]) ON [PRIMARY]
GO
CREATE NONCLUSTERED INDEX [IX_ContactMaster] ON [dbo].[UserMain] ([ContactMaster]) ON [PRIMARY]
GO
CREATE NONCLUSTERED INDEX [IX_UserMain_CreatedByUserKey] ON [dbo].[UserMain] ([CreatedByUserKey]) ON [PRIMARY]
GO
CREATE NONCLUSTERED INDEX [IX_UserMain_DefaultDepartmentGroupKey] ON [dbo].[UserMain] ([DefaultDepartmentGroupKey]) ON [PRIMARY]
GO
CREATE NONCLUSTERED INDEX [IX_UserMain_DefaultPerspectiveKey] ON [dbo].[UserMain] ([DefaultPerspectiveKey]) ON [PRIMARY]
GO
CREATE NONCLUSTERED INDEX [IX_UserMain_UserId] ON [dbo].[UserMain] ([UserId]) INCLUDE ([ProviderKey]) ON [PRIMARY]
GO
CREATE NONCLUSTERED INDEX [IX_UserMain_UpdatedByUserKey] ON [dbo].[UserMain] ([UpdatedByUserKey]) ON [PRIMARY]
GO
ALTER TABLE [dbo].[UserMain] ADD CONSTRAINT [FK_UserMain_ContactMain] FOREIGN KEY ([UserKey]) REFERENCES [dbo].[ContactMain] ([ContactKey])
GO
ALTER TABLE [dbo].[UserMain] ADD CONSTRAINT [FK_UserMain_GroupMain] FOREIGN KEY ([DefaultDepartmentGroupKey]) REFERENCES [dbo].[GroupMain] ([GroupKey])
GO
ALTER TABLE [dbo].[UserMain] ADD CONSTRAINT [FK_UserMain_Perspective] FOREIGN KEY ([DefaultPerspectiveKey]) REFERENCES [dbo].[Perspective] ([PerspectiveKey])
GO
ALTER TABLE [dbo].[UserMain] ADD CONSTRAINT [FK_UserMain_UserMain_CreatedBy] FOREIGN KEY ([CreatedByUserKey]) REFERENCES [dbo].[UserMain] ([UserKey])
GO
ALTER TABLE [dbo].[UserMain] ADD CONSTRAINT [FK_UserMain_UserMain_UpdatedBy] FOREIGN KEY ([UpdatedByUserKey]) REFERENCES [dbo].[UserMain] ([UserKey])
GO
GRANT SELECT ON  [dbo].[UserMain] TO [IMIS]
GO
Uses
Used By